package view.componentes;

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class FixedLengthUpperCaseDocument extends PlainDocument {

	private static final long serialVersionUID = 1L;
	
	private int iMaxLength;

	public FixedLengthUpperCaseDocument(int maxlen) {
		super();
		iMaxLength = maxlen;
	}

	@Override
	public void insertString(int offset, String str, AttributeSet attr)	throws BadLocationException	{

		if (str == null)
			return;
		// aceitara qualquer no. de caracteres
		if (iMaxLength <= 0) {
			//transforma para maiusculas antes de inserir
			super.insertString(offset, str.toUpperCase(), attr);
			return;
		}

		int ilen = (getLength() + str.length());
		// se o comprimento final for menor...
		if (ilen <= iMaxLength) {
			//transforma para maiusculas antes de inserir
			super.insertString(offset, str.toUpperCase(), attr); // ...aceita str
		} else {

			if (getLength() == iMaxLength){
				return; // nada a fazer
			}

			String newStr = str.substring(0, (iMaxLength - getLength()));
			//transforma para maiusculas antes de inserir
			super.insertString(offset, newStr.toUpperCase(), attr);
		}

	}

}